package com.eight.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.eight.dao.PermissionMapper;
import com.eight.dao.RoleMapper;
import com.eight.pojo.SysRole;
import com.eight.service.RoleService;
import com.eight.util.TimeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

@Service("roleService")
public class RoleServiceImpl extends ServiceImpl<RoleMapper, SysRole> implements RoleService {
    /**
     * 注入 role dao层
     */
    @Autowired private RoleMapper roleMapper;
    @Autowired private PermissionMapper permissionMapper;

    /**
     * 获取角色列表
     * @return List<SysRole> 返回所有角色
     */
    @Override
    public List<SysRole> selectList() {
        return roleMapper.selectList(new QueryWrapper<>());
    }

    /**
     * 根据id 删除角色
     * @param id 被删除的角色
     * @return  int 返回影响的行数
     */
    @Override
    public Integer deleteById(Integer id) {
        return roleMapper.deleteById(id);
    }

    /**
     * 修改用户权限
     * @param roleId 角色id
     * @param permissionIds 修改的权限
     * @return 返回修改结果
     */
    @Override
    public Integer updateRoleMenuById(Integer roleId, int[] permissionIds) {
        permissionMapper.deleteAllPermissionById(roleId);
            permissionMapper.insertPermissionsById(roleId,permissionIds);
                return 1;
    }

    /**
     * 添加一个新的据说色
     * @param roleApi 新角色信息
     * @return 返回添加结果
     */
    @Override
    public Integer addRole(SysRole roleApi) {
        roleApi.setCreateTime(TimeUtil.now("yyyy-MM-dd HH:mm:ss"));
        roleApi.setRoleKey("default");
        return roleMapper.insert(roleApi);
    }

    /**
     * 修改角色的信息
     * @param roleApi 修改后的角色信息以及 roleId
     * @return 修改的结果
     */
    @Override
    public Integer updateRole(SysRole roleApi) {
        return roleMapper.updateById(roleApi);
    }


}
